package com.cskaoyan.interfaces;

public class Demo1Introduction {
}

abstract class Animal {

    public abstract void eat();
    public abstract void shout();

}

class Dog extends Animal {

    @Override
    public void eat() {
        System.out.println("啃骨头");
    }

    @Override
    public void shout() {
        System.out.println("汪汪汪");
    }
}

class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("吃鱼");
    }

    @Override
    public void shout() {
        System.out.println("喵喵喵");
    }
}

// 在定义一个新的类，在该类中，定义经过特殊训练的动物所具有的行为
interface SpecialSkill {

    // 跳高
    // 只能是抽象方法，不同的动物跳高的行为不一样
    void jump();

    // 做运算
    // 只能是抽象方法，不同的动物计算的行为不一样
    void calculate();

}

// 基于接口可以解决单重继承问题
// 普通类只支持单重继承
class SpecialDog extends Dog implements SpecialSkill {
    @Override
    public void jump() {
        System.out.println("狗跳高");
    }

    @Override
    public void calculate() {
        System.out.println("狗做运算");
    }
}
// 普通类只支持单重继承
class SpecialCat extends Cat implements SpecialSkill{

    @Override
    public void jump() {
        System.out.println("猫跳高");
    }

    @Override
    public void calculate() {
        System.out.println("猫做运算");
    }
}
